using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Numerics;
using Nethereum.Hex.HexTypes;
using Nethereum.ABI.FunctionEncoding.Attributes;
using Nethereum.RPC.Eth.DTOs;
using Nethereum.Contracts.CQS;
using Nethereum.Contracts;
using System.Threading;

namespace Nethereum.Mud.Contracts.World.Modules.UniqueEntityModule.ContractDefinition
{


    public partial class UniqueEntityModuleDeployment : UniqueEntityModuleDeploymentBase
    {
        public UniqueEntityModuleDeployment() : base(BYTECODE) { }
        public UniqueEntityModuleDeployment(string byteCode) : base(byteCode) { }
    }

    public class UniqueEntityModuleDeploymentBase : ContractDeploymentMessage
    {
        public static string BYTECODE = "0x60c0604081905230608052620000159062000053565b604051809103906000f08015801562000032573d6000803e3d6000fd5b506001600160a01b031660a0523480156200004c57600080fd5b5062000061565b6111778062002be483390190565b60805160a051612b4f62000095600039600081816103ef01526107820152600081816101fb015261054d0152612b4f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806345ec93541161005057806345ec9354146100d45780637c5b0335146100e7578063e1af802c146100fa57600080fd5b806301ffc9a714610077578063119df25f1461009f57806313861fb5146100bf575b600080fd5b61008a6100853660046125de565b610102565b60405190151581526020015b60405180910390f35b6100a76101e7565b6040516001600160a01b039091168152602001610096565b6100d26100cd366004612611565b6101f6565b005b604051601f193601358152602001610096565b6100d26100f5366004612611565b610548565b6100a7610999565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f6fdd1c8000000000000000000000000000000000000000000000000000000000148061019557507fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000145b806101e157507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101f16109a3565b905090565b6102207f0000000000000000000000000000000000000000000000000000000000000000826109d5565b600061022a610999565b6040517f6e7300000000000000000000000000000000000000000000000000000000000060208201526b756e69717565456e7469747960a01b60228201529091506001600160a01b0382169063b29e408990603001604051602081830303815290604052610297906126c2565b6040518263ffffffff1660e01b81526004016102b591815260200190565b600060405180830381600087803b1580156102cf57600080fd5b505af11580156102e3573d6000803e3d6000fd5b505060408051613a3160f11b60208201526b756e69717565456e7469747960a01b60228201527f7461626c650000000000000000000000000000000000000000000000000000006030820152610354935001905060405160208183030381529060405261034f906126c2565b610a1a565b6040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b03831691633350b6a991016040516020818303038152906040526103b1906126c2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016602482015260016044820152606401600060405180830381600087803b15801561043857600080fd5b505af115801561044c573d6000803e3d6000fd5b50506040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b03851693506326d981029250016040516020818303038152906040526104ad906126c2565b6040518263ffffffff1660e01b81526004016105009181526040602082018190526011908201527f676574556e69717565456e746974792829000000000000000000000000000000606082015260800190565b6020604051808303816000875af115801561051f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054391906126e6565b505050565b6105727f0000000000000000000000000000000000000000000000000000000000000000826109d5565b600061057c610999565b6040517f6e7300000000000000000000000000000000000000000000000000000000000060208201526b756e69717565456e7469747960a01b602282015290915060009081906001600160a01b03841690819063b29e4089906030016040516020818303038152906040526105f0906126c2565b60405160240161060291815260200190565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161064f9250612727565b600060405180830381855af49150503d806000811461068a576040519150601f19603f3d011682016040523d82523d6000602084013e61068f565b606091505b5091509150816106a2576106a281610a78565b60408051613a3160f11b60208201526b756e69717565456e7469747960a01b60228201527f7461626c65000000000000000000000000000000000000000000000000000000603082015261070e9101604051602081830303815290604052610709906126c2565b610a80565b6040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b038516918291633350b6a9910160405160208183030381529060405261076d906126c2565b60405160248101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660448201526001606482015260840160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b9390931790925290516107fe9250612727565b600060405180830381855af49150503d8060008114610839576040519150601f19603f3d011682016040523d82523d6000602084013e61083e565b606091505b509092509050816108525761085281610a78565b6040805161737960f01b60208201526b756e69717565456e7469747960a01b60228201526573797374656d60d01b60308201526001600160a01b0385169182916326d9810291016040516020818303038152906040526108b1906126c2565b6040805160248101929092526044820152601160648201527f676574556e69717565456e746974792829000000000000000000000000000000608482015260a40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e09490941b93909317909252905161093f9250612727565b600060405180830381855af49150503d806000811461097a576040519150601f19603f3d011682016040523d82523d6000602084013e61097f565b606091505b509092509050816109935761099381610a78565b50505050565b60006101f1610adb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806109d25750335b90565b6109df8282610ae5565b15610a16576040517f1401206800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b610a75817e2001002000000000000000000000000000000000000000000000000000000060007e2001001f000000000000000000000000000000000000000000000000000000610a68610aff565b610a70610b32565b610bb7565b50565b805160208201fd5b610a75817e2001002000000000000000000000000000000000000000000000000000000060007e2001001f000000000000000000000000000000000000000000000000000000610ace610aff565b610ad6610b32565b610c71565b60006101f16110dd565b6000610af883838051906020012061111c565b9392505050565b60408051600080825260208201909252606091610b2c565b6060815260200190600190039081610b175790505b50905090565b604080516001808252818301909252606091816020015b6060815260200190600190039081610b495790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110610ba957610ba9612743565b602002602001018190525090565b6000610bc16110dd565b9050306001600160a01b03821603610be657610be1878787878787610c71565b610c68565b6040517f0ba51f490000000000000000000000000000000000000000000000000000000081526001600160a01b03821690630ba51f4990610c35908a908a908a908a908a908a906004016127df565b600060405180830381600087803b158015610c4f57600080fd5b505af1158015610c63573d6000803e3d6000fd5b505050505b50505050505050565b613a3160f11b867fffff0000000000000000000000000000000000000000000000000000000000001614801590610cea57507f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001614155b15610d5457613a3160f11b8687604051602001610d0991815260200190565b60408051601f19818403018152908290527f31b46683000000000000000000000000000000000000000000000000000000008252610d4b939291600401612829565b60405180910390fd5b610d5d856111ee565b610d68846001611435565b610d73836000611435565b60e084901c60e885901c0160ff16825114610dd35760e084901c60e885901c0160ff1682516040517f0f72cb9800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d4b565b60e085901c60e886901c0160ff16815114610e335760e085901c60e886901c0160ff1681516040517f7dec4c0000000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d4b565b60e085901c60e886901c0160ff1660e084901c60e885901c0160ff1614610eab5760e085901c60e886901c0160ff1660e084901c60e885901c0160ff166040517ff29d4d8800000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d4b565b610eb4856115d1565b610ebd846115d1565b14610f0f57610ecb856115d1565b610ed4846115d1565b6040517f65cc0adf00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d4b565b610f1885611603565b610f2184611603565b14610f7357610f2f85611603565b610f3884611603565b6040517fedea958700000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d4b565b60005b610f7f866115d1565b81101561101a57610fa9610f938583611620565b60c5811115610fa457610fa461286a565b611641565b6008601b8390030287901c60ff1614611012576008601b8290030286901c60ff16610fd7610f938684611620565b6040517f254c7db400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610d4b565b600101610f76565b50611024866116a1565b1561107e57858660405160200161103d91815260200190565b60408051601f19818403018152908290527fdfaaf9cf000000000000000000000000000000000000000000000000000000008252610d4b9291600401612880565b6110ca86868686866040516020016110969190612899565b604051602081830303815290604052866040516020016110b69190612899565b604051602081830303815290604052611746565b6110d5866001611829565b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e175546000906001600160a01b031680611117573391505090565b919050565b60408051600280825260608201835260009283929190602083019080368337019050509050836001600160a01b031660001b8160008151811061116157611161612743565b602002602001018181525050828160018151811061118157611181612743565b602090810291909101015260006111d97f7462776f726c64000000000000000000496e7374616c6c65644d6f64756c657383837e010100010000000000000000000000000000000000000000000000000000006118e2565b90506111e58160f81c90565b95945050505050565b80611225576040517fa019e4da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061123082611603565b90506005811115611277576040517f6793df620000000000000000000000000000000000000000000000000000000081526004810182905260056024820152604401610d4b565b6000611282836115d1565b9050600061129083836128c2565b9050601c8111156112d7576040517fecd893b900000000000000000000000000000000000000000000000000000000815260048101829052601c6024820152604401610d4b565b6000805b838110156113825760ff601b82900360080287901c16600081900361132f576040517f53b2dd0500000000000000000000000000000000000000000000000000000000815260048101839052602401610d4b565b602081111561136d576040517f7237f23700000000000000000000000000000000000000000000000000000000815260048101839052602401610d4b565b61137781846128c2565b9250506001016112db565b5061138c8561199f565b81146113d85761139b8561199f565b6040517feba964de000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610d4b565b825b601c8110156110d55760ff601b82900360080287901c16801561142c576040517f1d8d44db00000000000000000000000000000000000000000000000000000000815260048101839052602401610d4b565b506001016113da565b80158015611441575081155b156114625760405163d498615960e01b815260006004820152602401610d4b565b600061146d83611603565b905060058111156114945760405163d498615960e01b815260048101829052602401610d4b565b600061149f846115d1565b905060006114ad83836128c2565b9050601c8111156114d45760405163d498615960e01b815260048101829052602401610d4b565b6000805b838110156115405760006114ef610f938984611620565b90508060000361152b576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61153581846128c2565b9250506001016114d8565b5061154a8661199f565b8114611575576115598661199f565b60405163d498615960e01b8152600401610d4b91815260200190565b825b82811015610c6857600061158e610f938984611620565b905080156115c8576040517ff44b422000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600101611577565b6000600860016115e3600260206128d5565b6115ed91906128d5565b6115f791906128e8565b8260ff911c1692915050565b60006008600180611616600260206128d5565b6115e391906128d5565b6000601b8290036008028360ff911c1660c5811115610af857610af861286a565b6000808260c58111156116565761165661286a565b60ff169050606181101561167057601f1660010192915050565b60618360c58111156116845761168461286a565b036116925750601492915050565b50600092915050565b50919050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106116da576116da612743565b602090810291909101015260006117327f746273746f72650000000000000000005265736f75726365496473000000000083837e010100010000000000000000000000000000000000000000000000000000006119c2565b905061173e8160f81c90565b949350505050565b60408051602081018790528082018690526060808201869052825180830390910181526080909101909152600061177d84846119ef565b9050600061178b8585611a0c565b604080516001808252818301909252919250600091906020808301908036833701905050905089816000815181106117c5576117c5612743565b602090810291909101015261181d7f746273746f72650000000000000000005461626c657300000000000000000000828686867e60030220202000000000000000000000000000000000000000000000000000611a38565b50505050505050505050565b60408051600180825281830190925260009160208083019080368337019050509050828160008151811061185f5761185f612743565b6020026020010181815250506105437f746273746f72650000000000000000005265736f75726365496473000000000060001b826000856040516020016118ad91151560f81b815260010190565b60408051601f198184030181529190527e01010001000000000000000000000000000000000000000000000000000000611d71565b6000806118ed6110dd565b9050306001600160a01b038216036119135761190b868686866119c2565b91505061173e565b6040517f8c364d590000000000000000000000000000000000000000000000000000000081526001600160a01b03821690638c364d599061195e90899089908990899060040161293b565b602060405180830381865afa15801561197b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190b919061296a565b600060086119af600260206128d5565b6119b991906128e8565b9190911c919050565b60006111e56119d18686611d8d565b60ff858116601b0360080285901c166119ea8587611de3565b611e1c565b8151815160009181810160389190911b1760609190911b17610af8565b60608282604051602001611a21929190612983565b604051602081830303815290604052905092915050565b7f6f74000000000000000000000000000000000000000000000000000000000000867fffff0000000000000000000000000000000000000000000000000000000000001603611ac457857f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a986868686604051611ab794939291906129b2565b60405180910390a26110d5565b6000611acf87611e6d565b905060005b8151811015611ba8576000828281518110611af157611af1612743565b60200260200101519050611b1d6001826affffffffffffffffffffff1916611ef690919063ffffffff16565b15611b9f576040517f57066c9c000000000000000000000000000000000000000000000000000000008152606082901c906357066c9c90611b6c908c908c908c908c908c908c906004016129fc565b600060405180830381600087803b158015611b8657600080fd5b505af1158015611b9a573d6000803e3d6000fd5b505050505b50600101611ad4565b50867f8dbb3a9672eebfd3773e72dd9c102393436816d832c7ba9e1e1ac8fcadcac7a987878787604051611bdf94939291906129b2565b60405180910390a26000611bf38888611d8d565b90506000602087019050611c0b826000895184611f14565b6000611c1685611603565b1115611c9a576000611c288a8a611fd3565b878155905060208601915060008060005b611c4288611603565b8160ff161015611c9557611c578d8d83612029565b9250611c728a8260ff166028026038011c64ffffffffff1690565b9150611c818360008488611f14565b611c8b82866128c2565b9450600101611c39565b505050505b60005b835181101561181d576000848281518110611cba57611cba612743565b60200260200101519050611ce66002826affffffffffffffffffffff1916611ef690919063ffffffff16565b15611d68576040517f5b28cdaf000000000000000000000000000000000000000000000000000000008152606082901c90635b28cdaf90611d35908e908e908e908e908e908e906004016129fc565b600060405180830381600087803b158015611d4f57600080fd5b505af1158015611d63573d6000803e3d6000fd5b505050505b50600101611c9d565b611d868585611d808487611de3565b856120a9565b5050505050565b60008282604051602001611da2929190612a55565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff16811015611e1457611e0a60ff601b83900360080287901c16836128c2565b9150600101611de8565b509392505050565b600060208210611e4257602082048401935060208281611e3e57611e3e612a91565b0691505b508254600882021b602082900380841115611e14576001850154600882021c82179150509392505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611ea757611ea7612743565b60209081029190910101526000611edf7f746273746f726500000000000000000053746f7265486f6f6b730000000000008383612344565b905061173e611ef1826000845161237e565b61240c565b60008160ff1682611f078560581c90565b1660ff1614905092915050565b8215611f8e5760208310611f3e57602083048401935060208381611f3a57611f3a612a91565b0692505b8215611f8e5760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411611f7f575050610993565b50600194909401939182900391015b5b60208210611fb05780518455600190930192601f1990910190602001611f8f565b8115610993576000600019600884021c8554835182191691161785555050505050565b60008282604051602001611fe8929190612a55565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b6000838360405160200161203e929190612a55565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361213357837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161212693929190612aa7565b60405180910390a2610993565b600061213f8585611d8d565b9050600061214c86611e6d565b905060005b815181101561222157600082828151811061216e5761216e612743565b6020026020010151905061219a6004826affffffffffffffffffffff1916611ef690919063ffffffff16565b15612218576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d906121e5908b908b908b908b90600401612ae4565b600060405180830381600087803b1580156121ff57600080fd5b505af1158015612213573d6000803e3d6000fd5b505050505b50600101612151565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161225693929190612aa7565b60405180910390a2612271828565ffffffffffff168561241d565b60005b8151811015610c6857600082828151811061229157612291612743565b602002602001015190506122bd6008826affffffffffffffffffffff1916611ef690919063ffffffff16565b1561233b576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba872190612308908b908b908b908b90600401612ae4565b600060405180830381600087803b15801561232257600080fd5b505af1158015612336573d6000803e3d6000fd5b505050505b50600101612274565b606061173e612354858585612029565b6000612379856123648989612433565b9060ff166028026038011c64ffffffffff1690565b612446565b60008183118061238e5750835182115b156123cb578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610d4b93929190612b1d565b602084016123d984826128c2565b905060006123e785856128d5565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610af88360156000612469565b6105438383835161242e8560200190565b611f14565b6000610af86124428484611fd3565b5490565b60405160208101601f19603f8484010116604052828252611e14858585846124e4565b606060006124778560801c90565b90506fffffffffffffffffffffffffffffffff8516600085828161249d5761249d612a91565b04905060405193506020840160208202810160405281855260005b828110156124d8578451871c8252938701936020909101906001016124b8565b50505050509392505050565b821561256b576020831061250e5760208304840193506020838161250a5761250a612a91565b0692505b821561256b5760208390036000818410156125315750600019600884021c61253b565b50600019600882021c5b8554600886021b81845116821982161784525081841161255c575050610993565b50600194909401939182900391015b5b6020821061258d5783548152600190930192601f199091019060200161256c565b8115610993576000600019600884021c8251865482191691161782525050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a7557600080fd5b6000602082840312156125f057600080fd5b8135610af8816125b0565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561262357600080fd5b813567ffffffffffffffff8082111561263b57600080fd5b818401915084601f83011261264f57600080fd5b813581811115612661576126616125fb565b604051601f8201601f19908116603f01168101908382118183101715612689576126896125fb565b816040528281528760208487010111156126a257600080fd5b826020860160208301376000928101602001929092525095945050505050565b8051602080830151919081101561169b5760001960209190910360031b1b16919050565b6000602082840312156126f857600080fd5b8151610af8816125b0565b60005b8381101561271e578181015183820152602001612706565b50506000910152565b60008251612739818460208701612703565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b60008151808452612771816020860160208601612703565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b848110156127d257601f198684030189526127c0838351612759565b988401989250908301906001016127a4565b5090979650505050505050565b86815285602082015284604082015283606082015260c06080820152600061280a60c0830185612785565b82810360a084015261281c8185612785565b9998505050505050505050565b7fffff000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006111e56060830184612759565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600061173e6040830184612759565b602081526000610af86020830184612785565b634e487b7160e01b600052601160045260246000fd5b808201808211156101e1576101e16128ac565b818103818111156101e1576101e16128ac565b80820281158282048414176101e1576101e16128ac565b60008151808452602080850194506020840160005b8381101561293057815187529582019590820190600101612914565b509495945050505050565b84815260806020820152600061295460808301866128ff565b60ff949094166040830152506060015292915050565b60006020828403121561297c57600080fd5b5051919050565b60008351612995818460208801612703565b8351908301906129a9818360208801612703565b01949350505050565b6080815260006129c560808301876128ff565b82810360208401526129d78187612759565b905084604084015282810360608401526129f18185612759565b979650505050505050565b86815260c060208201526000612a1560c08301886128ff565b8281036040840152612a278188612759565b90508560608401528281036080840152612a418186612759565b9150508260a0830152979650505050505050565b8281526000602080830184516020860160005b82811015612a8457815184529284019290840190600101612a68565b5091979650505050505050565b634e487b7160e01b600052601260045260246000fd5b606081526000612aba60608301866128ff565b65ffffffffffff851660208401528281036040840152612ada8185612759565b9695505050505050565b848152608060208201526000612afd60808301866128ff565b65ffffffffffff8516604084015282810360608401526129f18185612759565b606081526000612b306060830186612759565b6020830194909452506040015291905056fea164736f6c6343000818000a608060405234801561001057600080fd5b50611157806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806345ec93541161005057806345ec9354146100c1578063490923cd146100d6578063e1af802c146100de57600080fd5b806301ffc9a71461006c578063119df25f14610094575b600080fd5b61007f61007a366004610e3b565b6100e6565b60405190151581526020015b60405180910390f35b61009c61017f565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008b565b36601f1901355b60405190815260200161008b565b6100c861018e565b61009c6102d7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fb5dee12700000000000000000000000000000000000000000000000000000000148061017957507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b60006101896102e1565b905090565b604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f756e69717565456e74697479000000000000000000000000000000000000000060228201527f7461626c650000000000000000000000000000000000000000000000000000006030820152600091829161022b910160405160208183030381529060405261022690610e7d565b610313565b610236906001610ed3565b604080517f746200000000000000000000000000000000000000000000000000000000000060208201527f756e69717565456e74697479000000000000000000000000000000000000000060228201527f7461626c6500000000000000000000000000000000000000000000000000000060308201529192506102d291016040516020818303038152906040526102cc90610e7d565b82610358565b919050565b60006101896103b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcc36013560601c806103105750335b90565b6040805160008082526020820190925260006103508483837e200100200000000000000000000000000000000000000000000000000000006103be565b949350505050565b604080516000808252602082018352918101839052906103af90849083906060820160408051601f198184030181529190527e20010020000000000000000000000000000000000000000000000000000000610495565b505050565b6000610189610565565b6000806103c9610565565b90503073ffffffffffffffffffffffffffffffffffffffff8216036103fc576103f4868686866105ac565b915050610350565b6040517f8c364d5900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638c364d5990610454908990899089908990600401610f22565b602060405180830381865afa158015610471573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f49190610f51565b600061049f610565565b90503073ffffffffffffffffffffffffffffffffffffffff8216036104d0576104cb86868686866105e2565b61055d565b6040517f390baae000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063390baae09061052a9089908990899089908990600401610fb0565b600060405180830381600087803b15801561054457600080fd5b505af1158015610558573d6000803e3d6000fd5b505050505b505050505050565b7f629a4c26e296b22a8e0856e9f6ecb2d1008d7e00081111962cd175fa7488e1755460009073ffffffffffffffffffffffffffffffffffffffff16806102d2573391505090565b60006105d96105bb86866105fe565b60ff858116601b0360080285901c166105d48587610654565b61068d565b95945050505050565b6105f785856105f18487610654565b856106de565b5050505050565b60008282604051602001610613929190610ff7565b60408051601f1981840301815291905280516020909101207f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9189392505050565b600080805b8360ff168110156106855761067b60ff601b83900360080287901c1683610ed3565b9150600101610659565b509392505050565b6000602082106106b3576020820484019350602082816106af576106af611033565b0691505b508254600882021b602082900380841115610685576001850154600882021c82179150509392505050565b7f6f74000000000000000000000000000000000000000000000000000000000000847fffff000000000000000000000000000000000000000000000000000000000000160361076857837f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be84848460405161075b93929190611062565b60405180910390a261097d565b600061077485856105fe565b9050600061078186610983565b905060005b81518110156108565760008282815181106107a3576107a361109f565b602002602001015190506107cf6004826affffffffffffffffffffff1916610a0c90919063ffffffff16565b1561084d576040517f964f667d000000000000000000000000000000000000000000000000000000008152606082901c9063964f667d9061081a908b908b908b908b906004016110ce565b600060405180830381600087803b15801561083457600080fd5b505af1158015610848573d6000803e3d6000fd5b505050505b50600101610786565b50857f8c0b5119d4cec7b284c6b1b39252a03d1e2f2d7451a5895562524c113bb952be86868660405161088b93929190611062565b60405180910390a26108a6828565ffffffffffff1685610a2a565b60005b81518110156109795760008282815181106108c6576108c661109f565b602002602001015190506108f26008826affffffffffffffffffffff1916610a0c90919063ffffffff16565b15610970576040517fa8ba8721000000000000000000000000000000000000000000000000000000008152606082901c9063a8ba87219061093d908b908b908b908b906004016110ce565b600060405180830381600087803b15801561095757600080fd5b505af115801561096b573d6000803e3d6000fd5b505050505b506001016108a9565b5050505b50505050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106109bd576109bd61109f565b602090810291909101015260006109f57f746273746f726500000000000000000053746f7265486f6f6b730000000000008383610a40565b9050610350610a078260008451610a7a565b610b11565b60008160ff1682610a1d8560581c90565b1660ff1614905092915050565b6103af83838351610a3b8560200190565b610b29565b6060610350610a50858585610be8565b6000610a7585610a608989610c68565b9060ff166028026038011c64ffffffffff1690565b610c7b565b600081831180610a8a5750835182115b15610ad0578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610ac793929190611112565b60405180910390fd5b60208401610ade8482610ed3565b90506000610aec8585611137565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b60606000610b228360156000610c9e565b9392505050565b8215610ba35760208310610b5357602083048401935060208381610b4f57610b4f611033565b0692505b8215610ba35760208390036000600019600885021c1990506008850281811c91508351811c9050811987541682821617875550818411610b9457505061097d565b50600194909401939182900391015b5b60208210610bc55780518455600190930192601f1990910190602001610ba4565b811561097d576000600019600884021c8554835182191691161785555050505050565b60008383604051602001610bfd929190610ff7565b604051602081830303815290604052805190602001208260f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3b4102da22e32d82fc925482184f16c09fd4281692720b87d124aef6da48a0f1181860001c90509392505050565b6000610b22610c778484610d19565b5490565b60405160208101601f19603f848401011660405282825261068585858584610d6f565b60606000610cac8560801c90565b90506fffffffffffffffffffffffffffffffff85166000858281610cd257610cd2611033565b04905060405193506020840160208202810160405281855260005b82811015610d0d578451871c825293870193602090910190600101610ced565b50505050509392505050565b60008282604051602001610d2e929190610ff7565b60408051601f1981840301815291905280516020909101207f14e2fcc58e58e68ec7edc30c8d50dccc3ce2714a623ec81f46b6a63922d76569189392505050565b8215610df65760208310610d9957602083048401935060208381610d9557610d95611033565b0692505b8215610df6576020839003600081841015610dbc5750600019600884021c610dc6565b50600019600882021c5b8554600886021b818451168219821617845250818411610de757505061097d565b50600194909401939182900391015b5b60208210610e185783548152600190930192601f1990910190602001610df7565b811561097d576000600019600884021c8251865482191691161782525050505050565b600060208284031215610e4d57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b2257600080fd5b80516020808301519190811015610e9e576000198160200360031b1b821691505b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561017957610179610ea4565b60008151808452602080850194506020840160005b83811015610f1757815187529582019590820190600101610efb565b509495945050505050565b848152608060208201526000610f3b6080830186610ee6565b60ff949094166040830152506060015292915050565b600060208284031215610f6357600080fd5b5051919050565b6000815180845260005b81811015610f9057602081850181015186830182015201610f74565b506000602082860101526020601f19601f83011685010191505092915050565b85815260a060208201526000610fc960a0830187610ee6565b60ff861660408401528281036060840152610fe48186610f6a565b9150508260808301529695505050505050565b8281526000602080830184516020860160005b828110156110265781518452928401929084019060010161100a565b5091979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6060815260006110756060830186610ee6565b65ffffffffffff8516602084015282810360408401526110958185610f6a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8481526080602082015260006110e76080830186610ee6565b65ffffffffffff8516604084015282810360608401526111078185610f6a565b979650505050505050565b6060815260006111256060830186610f6a565b60208301949094525060400152919050565b8181038181111561017957610179610ea456fea164736f6c6343000818000a";
        public UniqueEntityModuleDeploymentBase() : base(BYTECODE) { }
        public UniqueEntityModuleDeploymentBase(string byteCode) : base(byteCode) { }

    }

    public partial class MsgSenderFunction : MsgSenderFunctionBase { }

    [Function("_msgSender", "address")]
    public class MsgSenderFunctionBase : FunctionMessage
    {

    }

    public partial class MsgValueFunction : MsgValueFunctionBase { }

    [Function("_msgValue", "uint256")]
    public class MsgValueFunctionBase : FunctionMessage
    {

    }

    public partial class WorldFunction : WorldFunctionBase { }

    [Function("_world", "address")]
    public class WorldFunctionBase : FunctionMessage
    {

    }

    public partial class InstallFunction : InstallFunctionBase { }

    [Function("install")]
    public class InstallFunctionBase : FunctionMessage
    {
        [Parameter("bytes", "encodedArgs", 1)]
        public virtual byte[] EncodedArgs { get; set; }
    }

    public partial class InstallRootFunction : InstallRootFunctionBase { }

    [Function("installRoot")]
    public class InstallRootFunctionBase : FunctionMessage
    {
        [Parameter("bytes", "encodedArgs", 1)]
        public virtual byte[] EncodedArgs { get; set; }
    }

    public partial class SupportsInterfaceFunction : SupportsInterfaceFunctionBase { }

    [Function("supportsInterface", "bool")]
    public class SupportsInterfaceFunctionBase : FunctionMessage
    {
        [Parameter("bytes4", "interfaceId", 1)]
        public virtual byte[] InterfaceId { get; set; }
    }

    public partial class StoreSetrecordEventDTO : StoreSetrecordEventDTOBase { }

    [Event("Store_SetRecord")]
    public class StoreSetrecordEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "tableId", 1, true)]
        public virtual byte[] TableId { get; set; }
        [Parameter("bytes32[]", "keyTuple", 2, false)]
        public virtual List<byte[]> KeyTuple { get; set; }
        [Parameter("bytes", "staticData", 3, false)]
        public virtual byte[] StaticData { get; set; }
        [Parameter("bytes32", "encodedLengths", 4, false)]
        public virtual byte[] EncodedLengths { get; set; }
        [Parameter("bytes", "dynamicData", 5, false)]
        public virtual byte[] DynamicData { get; set; }
    }

    public partial class StoreSplicestaticdataEventDTO : StoreSplicestaticdataEventDTOBase { }

    [Event("Store_SpliceStaticData")]
    public class StoreSplicestaticdataEventDTOBase : IEventDTO
    {
        [Parameter("bytes32", "tableId", 1, true)]
        public virtual byte[] TableId { get; set; }
        [Parameter("bytes32[]", "keyTuple", 2, false)]
        public virtual List<byte[]> KeyTuple { get; set; }
        [Parameter("uint48", "start", 3, false)]
        public virtual ulong Start { get; set; }
        [Parameter("bytes", "data", 4, false)]
        public virtual byte[] Data { get; set; }
    }

    public partial class FieldlayoutEmptyError : FieldlayoutEmptyErrorBase { }
    [Error("FieldLayout_Empty")]
    public class FieldlayoutEmptyErrorBase : IErrorDTO
    {
    }

    public partial class FieldlayoutInvalidstaticdatalengthError : FieldlayoutInvalidstaticdatalengthErrorBase { }

    [Error("FieldLayout_InvalidStaticDataLength")]
    public class FieldlayoutInvalidstaticdatalengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "staticDataLength", 1)]
        public virtual BigInteger StaticDataLength { get; set; }
        [Parameter("uint256", "computedStaticDataLength", 2)]
        public virtual BigInteger ComputedStaticDataLength { get; set; }
    }

    public partial class FieldlayoutStaticlengthdoesnotfitinawordError : FieldlayoutStaticlengthdoesnotfitinawordErrorBase { }

    [Error("FieldLayout_StaticLengthDoesNotFitInAWord")]
    public class FieldlayoutStaticlengthdoesnotfitinawordErrorBase : IErrorDTO
    {
        [Parameter("uint256", "index", 1)]
        public virtual BigInteger Index { get; set; }
    }

    public partial class FieldlayoutStaticlengthisnotzeroError : FieldlayoutStaticlengthisnotzeroErrorBase { }

    [Error("FieldLayout_StaticLengthIsNotZero")]
    public class FieldlayoutStaticlengthisnotzeroErrorBase : IErrorDTO
    {
        [Parameter("uint256", "index", 1)]
        public virtual BigInteger Index { get; set; }
    }

    public partial class FieldlayoutStaticlengthiszeroError : FieldlayoutStaticlengthiszeroErrorBase { }

    [Error("FieldLayout_StaticLengthIsZero")]
    public class FieldlayoutStaticlengthiszeroErrorBase : IErrorDTO
    {
        [Parameter("uint256", "index", 1)]
        public virtual BigInteger Index { get; set; }
    }

    public partial class FieldlayoutToomanydynamicfieldsError : FieldlayoutToomanydynamicfieldsErrorBase { }

    [Error("FieldLayout_TooManyDynamicFields")]
    public class FieldlayoutToomanydynamicfieldsErrorBase : IErrorDTO
    {
        [Parameter("uint256", "numFields", 1)]
        public virtual BigInteger NumFields { get; set; }
        [Parameter("uint256", "maxFields", 2)]
        public virtual BigInteger MaxFields { get; set; }
    }

    public partial class FieldlayoutToomanyfieldsError : FieldlayoutToomanyfieldsErrorBase { }

    [Error("FieldLayout_TooManyFields")]
    public class FieldlayoutToomanyfieldsErrorBase : IErrorDTO
    {
        [Parameter("uint256", "numFields", 1)]
        public virtual BigInteger NumFields { get; set; }
        [Parameter("uint256", "maxFields", 2)]
        public virtual BigInteger MaxFields { get; set; }
    }

    public partial class ModuleAlreadyinstalledError : ModuleAlreadyinstalledErrorBase { }
    [Error("Module_AlreadyInstalled")]
    public class ModuleAlreadyinstalledErrorBase : IErrorDTO
    {
    }

    public partial class ModuleMissingdependencyError : ModuleMissingdependencyErrorBase { }

    [Error("Module_MissingDependency")]
    public class ModuleMissingdependencyErrorBase : IErrorDTO
    {
        [Parameter("address", "dependency", 1)]
        public virtual string Dependency { get; set; }
    }

    public partial class ModuleNonrootinstallnotsupportedError : ModuleNonrootinstallnotsupportedErrorBase { }
    [Error("Module_NonRootInstallNotSupported")]
    public class ModuleNonrootinstallnotsupportedErrorBase : IErrorDTO
    {
    }

    public partial class ModuleRootinstallnotsupportedError : ModuleRootinstallnotsupportedErrorBase { }
    [Error("Module_RootInstallNotSupported")]
    public class ModuleRootinstallnotsupportedErrorBase : IErrorDTO
    {
    }

    public partial class SchemaInvalidlengthError : SchemaInvalidlengthErrorBase { }

    [Error("Schema_InvalidLength")]
    public class SchemaInvalidlengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "length", 1)]
        public virtual BigInteger Length { get; set; }
    }

    public partial class SchemaStatictypeafterdynamictypeError : SchemaStatictypeafterdynamictypeErrorBase { }
    [Error("Schema_StaticTypeAfterDynamicType")]
    public class SchemaStatictypeafterdynamictypeErrorBase : IErrorDTO
    {
    }

    public partial class SliceOutofboundsError : SliceOutofboundsErrorBase { }

    [Error("Slice_OutOfBounds")]
    public class SliceOutofboundsErrorBase : IErrorDTO
    {
        [Parameter("bytes", "data", 1)]
        public virtual byte[] Data { get; set; }
        [Parameter("uint256", "start", 2)]
        public virtual BigInteger Start { get; set; }
        [Parameter("uint256", "end", 3)]
        public virtual BigInteger End { get; set; }
    }

    public partial class StoreInvalidfieldnameslengthError : StoreInvalidfieldnameslengthErrorBase { }

    [Error("Store_InvalidFieldNamesLength")]
    public class StoreInvalidfieldnameslengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreInvalidkeynameslengthError : StoreInvalidkeynameslengthErrorBase { }

    [Error("Store_InvalidKeyNamesLength")]
    public class StoreInvalidkeynameslengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreInvalidresourcetypeError : StoreInvalidresourcetypeErrorBase { }

    [Error("Store_InvalidResourceType")]
    public class StoreInvalidresourcetypeErrorBase : IErrorDTO
    {
        [Parameter("bytes2", "expected", 1)]
        public virtual byte[] Expected { get; set; }
        [Parameter("bytes32", "resourceId", 2)]
        public virtual byte[] ResourceId { get; set; }
        [Parameter("string", "resourceIdString", 3)]
        public virtual string ResourceIdString { get; set; }
    }

    public partial class StoreInvalidstaticdatalengthError : StoreInvalidstaticdatalengthErrorBase { }

    [Error("Store_InvalidStaticDataLength")]
    public class StoreInvalidstaticdatalengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreInvalidvalueschemadynamiclengthError : StoreInvalidvalueschemadynamiclengthErrorBase { }

    [Error("Store_InvalidValueSchemaDynamicLength")]
    public class StoreInvalidvalueschemadynamiclengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreInvalidvalueschemalengthError : StoreInvalidvalueschemalengthErrorBase { }

    [Error("Store_InvalidValueSchemaLength")]
    public class StoreInvalidvalueschemalengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreInvalidvalueschemastaticlengthError : StoreInvalidvalueschemastaticlengthErrorBase { }

    [Error("Store_InvalidValueSchemaStaticLength")]
    public class StoreInvalidvalueschemastaticlengthErrorBase : IErrorDTO
    {
        [Parameter("uint256", "expected", 1)]
        public virtual BigInteger Expected { get; set; }
        [Parameter("uint256", "received", 2)]
        public virtual BigInteger Received { get; set; }
    }

    public partial class StoreTablealreadyexistsError : StoreTablealreadyexistsErrorBase { }

    [Error("Store_TableAlreadyExists")]
    public class StoreTablealreadyexistsErrorBase : IErrorDTO
    {
        [Parameter("bytes32", "tableId", 1)]
        public virtual byte[] TableId { get; set; }
        [Parameter("string", "tableIdString", 2)]
        public virtual string TableIdString { get; set; }
    }

    public partial class MsgSenderOutputDTO : MsgSenderOutputDTOBase { }

    [FunctionOutput]
    public class MsgSenderOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("address", "sender", 1)]
        public virtual string Sender { get; set; }
    }

    public partial class MsgValueOutputDTO : MsgValueOutputDTOBase { }

    [FunctionOutput]
    public class MsgValueOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("uint256", "value", 1)]
        public virtual BigInteger Value { get; set; }
    }

    public partial class WorldOutputDTO : WorldOutputDTOBase { }

    [FunctionOutput]
    public class WorldOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }





    public partial class SupportsInterfaceOutputDTO : SupportsInterfaceOutputDTOBase { }

    [FunctionOutput]
    public class SupportsInterfaceOutputDTOBase : IFunctionOutputDTO
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }
}
